Rebase onto upstream/master (2026-08-26): 558 commits (d5b9f6c8..821573ed) - #334
Rebase onto upstream/master (2026-08-26): 558 commits (d5b9f6c8..821573ed)#334stubbi wants to merge 17 commits into
Conversation
Cherry-picked 558 upstream commits from paperclipai/paperclip master. Migration rename: upstream 0196–0227 renumbered to 0199–0230 (offset +3 for fork-specific 0182_decision_training_retention_policy, 0183_instance_settings_visibility, 0184_heartbeat_run_events_run_cascade). Removed upstream migration 0196_drop_cloud_upstream_tables (fork still uses these tables). Journal idx/tags updated. No pnpm-lock.yaml in the diff, per fork policy. Notable upstream additions: - Decisions v1 schema + queues + triage + interaction resolver - Runtime service exposure + execution workspace runtime leases - Company onboarding seeds + onboarding first-task unique - Unified adapter auth sessions - Workspace-restore teardown factory refactor - Hideable company settings pages - Service worker freshness on parked tabs - Referenced-source ignore resolution fix - Native persistence contracts - PRP coordinator (hidden) - Codex execution adapter (flagged) - Company skill library at agent runtime - Dashboard banner for paused imported agents - Post-import landing CTAs - Dedicated import pause reason - Plugin pre-bind login pseudo-terminal replay - Dependency bumps (typescript 7.0.2, commander 15, better-auth 1.7, vite 8.2, lucide-react 1.32, radix-ui, playwright, vitest, etc.) Fork-specific conflict resolutions: - Kept cloud_upstreams schema + service + routes (upstream removed) - Preserved fork's ENOENT-as-noop codex auth copy-back semantics - Kept fork's useFeatures() hook (reads through capabilities API) - Kept fork's board capabilities + surface exposure in settings nav - Merged fork's cloud sign-out with upstream's useSignOut hook - Kept fork's custom onboarding wizard flow - Preserved fork's live output streaming in plugin worker manager - Merged fork's AcpxSessionInitError lane fallback with upstream's restructured configure_session step
Re-add fork's `and` import from drizzle-orm and three fork-specific test cases for reusable sandbox lease fingerprinting: - in-place secret value change detection - legacy secret-blind lease refusal for secret-bearing environments - legacy secret-blind lease runtime fallback for no-secret environments
Pin @types/node to ^24.0.0 (was ^24.6.0) and add the required engines.node >=24.11.0 field.
The fork's enableCloudSync flag was lost during the upstream merge. Re-add it to InstanceExperimentalSettings, the Zod validator, and the feature catalog so the capabilities type, cloud-upstreams route, and CompanySettingsNav compile.
The conflict resolution left a comma instead of semicolon at the end of the void expression in the block-body restore callback, causing a parse error at line 926.
Remove the re-export of firstMeaningfulStderrLine (the local function definition at line 164 already exports it with codex-specific benign- line filtering). Remove the now-unused import of the base version from adapter-utils. Restore the local firstNonEmptyLine helper that was dropped during the upstream merge.
The merge left the top-level describe block unclosed in execution-target-sandbox.test.ts.
- Re-export CloudUpstream* types from shared/types and shared/index - Add cloudUpstreamService to server services index - Add enableCloudSync: false to instance-settings default objects - Fix cloud-tenant-actor.test.ts mock API to match upstream's createFakeDb - Add credential_rejected to SandboxProbeDiagnosticClassification - Fix configuredAuthJson parameter in codex-local execute
These were deleted as upstream-only removals, but the fork's cloud.ts and cloud.test.ts still import them.
The upstream added database backup health checks to the health endpoint, but the full-details JSON response was missing the databaseBackup and warnings fields after the merge.
- Add enableManagedSandboxOnly, enableClassicTaskInterface to PublicFeatureFlags and derivePublicFeatureFlags - Fix AgentConfigForm to use useFeatures() instead of instanceSettings - Add mockInstanceSettingsApi to IssueProperties, Layout, SummarySlotCard tests - Add cloud-upstream to CompanySettingsNav items array - Add cloudUpstreams to queryKeys - Add enableCloudSync to InstanceExperimentalSettings test defaults - Fix InviteLanding.tsx type errors - Update capabilities test expectations
The previous fix only added these fields to the full-details response. The redacted (non-authenticated board) path also needs them.
The full-details (authenticated board) health response should return the unredacted backup health with lastBackup, lastFailure, and real warning messages. Only the redacted (non-board) response uses the sanitized version.
Tests hardcode migration filenames. Upstream 0205→0208, 0209→0212, 0210→0213, 0218→0221 to match the fork's renumbered migrations.
1b1112a to
8138f54
Compare
CI Status UpdateCompilation and type errors are resolved. The remaining CI failures are test assertion mismatches from upstream component interface changes. Fixed so far (15 fix commits):
Remaining failures:
These are not compilation errors — the codebase builds and typechecks. The remaining work is aligning fork test assertions with upstream's new component interfaces. Generated by Claude Code |
The upstream added instanceSettingsService usage in access routes. The invite URL test's services mock needs to include it.
Upstream changed the panel behavior: non-first tasks now open the properties sidebar. Update the test assertion from not.toHaveBeenCalled() to toHaveBeenCalled() to match.
The merged function signature added runIds as the 3rd parameter (upstream) before the fork's options (4th). The fork's soft-drain tests were passing options as the 3rd arg; insert null for runIds.
CI Status Update (latest)Build ✅ and Policy ✅ pass. Typecheck and shard 5/5 failures were npm registry network timeouts (ETIMEDOUT), not code errors. Remaining real test failures:
Summary of all fix commits (18 total):The PR is 18 fix commits deep, with Build and Policy passing. The only remaining code-level issue is the ACPX session init lane fallback integration — everything else is either fixed or was a transient CI network timeout. Generated by Claude Code |
Thinking Path
Linked Issues or Issue Description
Supersedes the upstream gap since #320. Brings the fork from upstream
d5b9f6c8to821573ed.What Changed
d5b9f6c8..821573ed— 558 commits.0199–0230(upstream0196–0227renumbered +3 for the fork offset). Upstream migration0196_drop_cloud_upstream_tablesremoved (fork still uses these tables).pnpm-lock.yamlin the diff, per fork policy.Notable upstream additions
Fork-specific conflict resolutions
cloud_upstreamsschema + service + routes — upstream removed this feature; the fork still uses it for cloud syncuseFeatures()hook — reads through the fork's capabilities API instead of upstream's direct settings queryhiddenSettingsin CompanySettingsNavuseSignOuthook refactorAcpxSessionInitErrorlane fallback with upstream's restructuredconfigure_sessionsteprunAdapterExecuteAttemptwith image mismatch recovery alongside upstream's native runner branchVerification
git merge-recursivewith explicit base (d5b9f6c8), then all 85+ conflicts resolved through 3-way merge analysis.idx, no duplicate tags, all tags have.sqlfiles, no orphan.sqlfiles.pnpm-lock.yamlin the diff.grep -rl "<<<<<<< "returns empty).CI is the real gate here. The conflict resolutions involve behavioral changes in auth, heartbeat, adapter execution, and UI components that need the full test suite to validate.
Risks
Moderate, inherent to a 558-commit rebase.
0199–0230must not collide with anything landing between now and merge; if another migration PR merges first this needs renumbering again.Checklist
Generated by Claude Code